home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2009 February
/
PCWFEB09.iso
/
Software
/
Linux
/
Kubuntu 8.10
/
kubuntu-8.10-desktop-i386.iso
/
casper
/
filesystem.squashfs
/
usr
/
share
/
defoma
/
libdefoma-id.pl
< prev
next >
Wrap
Text File
|
2006-06-17
|
3KB
|
149 lines
sub com_id_list_cache {
usage_and_exit if (@ARGV == 0);
my $app = shift(@ARGV);
my @caches = get_files("id-cache.*", $ROOTDIR . "/$app.d");
foreach my $i (@caches) {
if ($i eq 'id-cache') {
$i = '#DEFAULT#';
} else {
$i =~ s/id-cache\.//;
}
}
printm("Id Cache: " . join(' ', @caches));
exit 0;
}
sub com_id_common {
my $com = shift;
usage_and_exit if (@ARGV < 3);
my $appcache = shift(@ARGV);
my $id = shift(@ARGV);
my $font = shift(@ARGV);
my $app;
my $cache;
if ($appcache =~ /^([^\/]+)\/(.*)/) {
$app = $1;
$cache = $2;
$cache = '' if ($cache eq '#DEFAULT#');
} else {
$app = $appcache;
$cache = '';
}
my $obj = defoma_id_open_cache($cache, $app);
unless ($obj) {
$cache = '#DEFAULT#' if ($cache eq '');
printw("id-cache $app/$cache not found.");
exit ERROR;
}
mylock(1);
init_all();
if ($com eq 'unset') {
defoma_id_unset($obj, $id, $font);
} else {
defoma_id_set($obj, $id, $font, $com);
}
term_all();
defoma_id_close_cache($obj);
mylock(0);
exit 0;
}
sub com_id_alias {
my $com = shift;
usage_and_exit if ($com eq 'add-alias' && @ARGV < 4);
usage_and_exit if ($com eq 'remove-alias' && @ARGV < 3);
my $appcache = shift(@ARGV);
my $id = shift(@ARGV);
my $font = shift(@ARGV);
my $alias = shift(@ARGV);
my $app;
my $cache;
if ($appcache =~ /^([^\/]+)\/(.*)/) {
$app = $1;
$cache = $2;
$cache = '' if ($cache eq '#DEFAULT#');
} else {
$app = $appcache;
$cache = '';
}
my $obj = defoma_id_open_cache($cache, $app);
unless ($obj) {
$cache = '#DEFAULT#' if ($cache eq '');
printw("id-cache $app/$cache not found.");
exit ERROR;
}
unless (exists($obj->{hash01}->{$id . ' ' . $font})) {
printw("id/font $id/$font not found.");
exit ERROR;
}
my $i = $obj->{hash01}->{$id . ' ' . $font};
if ($com eq 'add-alias') {
my $pri = $obj->{3}->[$i];
my $ctg = $obj->{4}->[$i];
mylock(1);
init_all();
defoma_id_register($obj, type => 'useralias', id => $alias,
font => $font, priority => $pri,
category => $ctg, origin => $id);
} else {
if ($obj->{2}->[$i] !~ /^Ua/) {
printw("id $id is not user-defined alias.");
exit ERROR;
}
mylock(1);
init_all();
defoma_id_unregister($obj, type => 'useralias', id => $id,
font => $font);
}
term_all();
defoma_id_close_cache($obj);
mylock(0);
exit 0;
}
sub main {
my $command = shift;
if ($command eq 'list-cache') {
com_id_list_cache();
} elsif ($command eq 'install' || $command eq 'exclude') {
com_id_common($command);
} elsif ($command eq 'unset') {
com_id_common('unset');
} elsif ($command eq 'add-alias' || $command eq 'remove-alias') {
com_id_alias($command);
}
}
1;